package com.pai4j.aigc.controller;

import com.pai4j.aigc.service.ArticleRecommendationService;
import com.pai4j.common.bean.PAIResponseBean;
import com.pai4j.common.bean.PAIResponseBeanUtil;
import com.pai4j.domain.vo.response.ArticleCardVO;
import jakarta.validation.constraints.NotBlank;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 智能文章推荐控制器
 * 
 * @author PAI4J-AIGC
 * @date 2025-01-26
 */
@Slf4j
@RestController
@RequestMapping("/aigc-service/article-recommendation")
public class ArticleRecommendationController {

    @Autowired
    private ArticleRecommendationService articleRecommendationService;

    /**
     * 智能推荐文章（支持Bot插件调用）
     *
     * @param query 用户问题/查询内容
     * @param maxResults 最多返回几篇文章（默认3，最大10）
     * @param searchLimit 搜索候选文章数量（默认20，最大50）
     * @return 推荐的文章卡片列表
     */
    @PostMapping("/recommend")
    public PAIResponseBean<List<ArticleCardVO>> recommend(
            @RequestParam @NotBlank String query,
            @RequestParam(required = false) Integer maxResults,
            @RequestParam(required = false) Integer searchLimit) {
        try {
            log.info("【智能文章推荐插件】开始处理，query:{}, maxResults:{}, searchLimit:{}", 
                    query, maxResults, searchLimit);
            
            List<ArticleCardVO> cards = articleRecommendationService.recommendArticles(query, maxResults, searchLimit);
            
            log.info("【智能文章推荐插件】处理完成，query:{}, 推荐数量:{}", query, cards.size());
            return PAIResponseBeanUtil.success(cards);
        } catch (Exception e) {
            log.error("【智能文章推荐插件】处理异常，query:" + query, e);
            return PAIResponseBeanUtil.fail("智能文章推荐失败：" + e.getMessage());
        }
    }
}
